package com.spyu.exception;

import cn.hutool.core.util.StrUtil;
import lombok.Data;

/**
 * 异常返回前端模型
 *
 * @author spyu
 * @date 2023-03-08
 */
@Data
public class CommonException extends RuntimeException {
    /**
     * 异常码
     */
    private Integer errCode;
    /**
     * 异常信息
     */
    private String errMsg;
    /**
     * 异常操作对象
     */
    private IErrorMessage errObject;

    public CommonException() {

    }

    public CommonException(String errMsg) {
        super(errMsg);
        this.errMsg = errMsg;
    }

    public CommonException(String message, Throwable cause) {
        super(message, cause);
    }

    public CommonException(IErrorMessage errObject) {
        super(String.format("[%s]:%s", errObject.getCode(), errObject.getMsg()));
        this.errObject = errObject;
        this.errCode = errObject.getCode();
        this.errMsg = errObject.getMsg();
    }

    public CommonException(IErrorMessage errObject, Throwable cause) {
        super(String.format("[%s]:%s", errObject.getCode(), errObject.getMsg()));
        this.errObject = errObject;
        this.errCode = errObject.getCode();
        this.errMsg = errObject.getMsg();
    }

    public CommonException(IErrorMessage errObject, String errMsg) {
        super(String.format("[%s]:%s", errObject.getCode(),
                StrUtil.isEmpty(errObject.getMsg()) ? errObject.getMsg() : errMsg));
        this.errObject = errObject;
        this.errCode = errObject.getCode();
        this.errMsg = StrUtil.isEmpty(errObject.getMsg()) ? errObject.getMsg() : errMsg;
    }

    public CommonException(Integer errCode, String errMsg) {
        super(String.format("[%s]:%s", errCode, errMsg));
        this.errCode = errObject.getCode();
        this.errMsg = errMsg;
    }
}
